import requests
import base64
import urllib
import urllib3
import json
import time
import socket
import os
import openpyxl
import webbrowser

IP = socket.gethostbyname(socket.gethostname())

if IP == '192.168.3.42':
    BASE = "http://10.251.36.13:8081"
else:
    BASE = "http://10.251.52.16:12104"
BASE = "http://10.251.52.16:12104"

URL_LOGIN = BASE+"/adpm-web/login"

URL_XQCX = BASE+"/adpm-web/businessRequirement/json/brListPage/page"


URL_LIST = BASE+"/adpm-web/businessRequirement/json/brListPage/page"


session = requests.Session()


def Login(loginName, passWd):
    '''
    @param loginName str：登录用户名
    @param passWd str：登录密码
    @return userId str：ADPM用户ID
    '''
    # 登录模块
    password = base64.b64encode(passWd.encode())
    LOGIN_DATA = {'loginName': loginName, 'password': password}
    login_html = session.post(url=URL_LOGIN, data=LOGIN_DATA)
    try:
        userId = login_html.json().get('data').get('user').get('userId')
    except:
        raise Exception("密码错误")
    # 有代理的使用自己身份登录
    # print(login_html.json().get('data'))
    # URL_SELECT = BASE+"/adpm-web/proxy/view/switch?userId="+str(userId)
    URL_SELECT = BASE+"/adpm-web/proxy/view/switch?userId="+str(100000056185)
    # http://adpm.bosc:12104/adpm-web/proxy/view/switch?userId=100000000070
    # http://adpm.bosc:12104/adpm-web/proxy/view/switch?userId=100000060703
    index = session.get(URL_SELECT)
    return str(userId)


def GetBrInfo(code, brTypes="1"):
    '''
    @param code str：需求编号
    @param brTypes str：需求类型 三种需求类型全支持
    @return dict： {'brId':需求id,'brCode':需求编号,'brName':需求名称}
    '''
    try:
        data1 = {
            'draw': '4',
            'columns[0][data]': 'brCode',
            'columns[0][name]': '',
            'columns[0][searchable]': 'true',
            'columns[0][orderable]': 'false',
            'columns[0][search][value]': '',
            'columns[0][search][regex]': 'false',
            'columns[1][data]': 'oaCode',
            'columns[1][name]': '',
            'columns[1][searchable]': 'true',
            'columns[1][orderable]': 'false',
            'columns[1][search][value]': '',
            'columns[1][search][regex]': 'false',
            'columns[2][data]': 'brName',
            'columns[2][name]': '',
            'columns[2][searchable]': 'true',
            'columns[2][orderable]': 'false',
            'columns[2][search][value]': '',
            'columns[2][search][regex]': 'false',
            'columns[3][data]': 'brType',
            'columns[3][name]': '',
            'columns[3][searchable]': 'true',
            'columns[3][orderable]': 'false',
            'columns[3][search][value]': '',
            'columns[3][search][regex]': 'false',
            'columns[4][data]': 'proposalStage',
            'columns[4][name]': '',
            'columns[4][searchable]': 'true',
            'columns[4][orderable]': 'false',
            'columns[4][search][value]': '',
            'columns[4][search][regex]': 'false',
            'columns[5][data]': 'brProposerSupDept',
            'columns[5][name]': '',
            'columns[5][searchable]': 'true',
            'columns[5][orderable]': 'false',
            'columns[5][search][value]': '',
            'columns[5][search][regex]': 'false',
            'columns[6][data]': 'brContacts',
            'columns[6][name]': '',
            'columns[6][searchable]': 'true',
            'columns[6][orderable]': 'false',
            'columns[6][search][value]': '',
            'columns[6][search][regex]': 'false',
            'columns[7][data]': 'brDept',
            'columns[7][name]': '',
            'columns[7][searchable]': 'true',
            'columns[7][orderable]': 'false',
            'columns[7][search][value]': '',
            'columns[7][search][regex]': 'false',
            'columns[8][data]': 'brChief',
            'columns[8][name]': '',
            'columns[8][searchable]': 'true',
            'columns[8][orderable]': 'false',
            'columns[8][search][value]': '',
            'columns[8][search][regex]': 'false',
            'columns[9][data]': 'brStatus',
            'columns[9][name]': '',
            'columns[9][searchable]': 'true',
            'columns[9][orderable]': 'false',
            'columns[9][search][value]': '',
            'columns[9][search][regex]': 'false',
            'columns[10][data]': 'tmpTaskLastModifyTime',
            'columns[10][name]': '',
            'columns[10][searchable]': 'true',
            'columns[10][orderable]': 'false',
            'columns[10][search][value]': '',
            'columns[10][search][regex]': 'false',
            'columns[11][data]': 'tmpLastBatchNum',
            'columns[11][name]': '',
            'columns[11][searchable]': 'true',
            'columns[11][orderable]': 'false',
            'columns[11][search][value]': '',
            'columns[11][search][regex]': 'false',
            'columns[12][data]': 'tmpDeployedDate',
            'columns[12][name]': '',
            'columns[12][searchable]': 'true',
            'columns[12][orderable]': 'false',
            'columns[12][search][value]': '',
            'columns[12][search][regex]': 'false',
            'columns[13][data]': 'isWorkloadFinishedDate',
            'columns[13][name]': '',
            'columns[13][searchable]': 'true',
            'columns[13][orderable]': 'false',
            'columns[13][search][value]': '',
            'columns[13][search][regex]': 'false',
            'start': '0',
            'length': '1000',
            'search[value]': '',
            'search[regex]': 'false',
            'page': '1',
            'size': '100',
            'brStockFlag': '',
            'myBr': '',
            'brTypes[]': brTypes,
            'showTaskLastModifyTime': 'true',
            'notInBrStatus': '7',
            'likeBrCode': code,
            'likeBrName': '',
            'brDept': '',
            'brProposerSupDept': '',
            'brType': '',
            'brProcStatuss': '',
            'brStatus': ''
        }

        info = session.post(URL_LIST, data=data1)
        rows = info.json().get('rows')
        brId = rows[0].get('brId')
        brCode = rows[0].get('brCode')
        brName = rows[0].get('brName')

        # 需求号  需求名  需求id
        # print( {'brId':brId,'brCode':brCode,'brName':brName})
        return {'brId': brId, 'brCode': brCode, 'brName': brName}
        # URL_TASK = BASE+"/adpm-web/taskInfo/json/tree?parentTaskId=&brId=" + \
        #     str(brid)+"&proId=&queryFlag=isBatch&userId=100000063439&sysIdSpace=&page=1&size=10&_=1591231828661"

    except:
        if brTypes == "1":
            return GetBrInfo(code, brTypes="3")
        if brTypes == "3":
            return GetBrInfo(code, brTypes="4")
        return None


def GetMonthlyList(brCode="",month="", date="",flagdate="",name="柜面业务处理",page="1",filePath="D:/文档/七月版/柜面组2020年08月工作计划.xlsx"):
    '''
    @param month：月度 eg.'2020-07'
    @param date：投产日期 eg. '2020-07-24'
    @param flagdate：eg.20200818 月版日期 判断是否月版投产
    @param name：系统名称
    @param page：分页数据
    @param filePath：生成表格路径
    '''
    URL = "http://10.251.52.16:12104/adpm-web/progroup/json/listDeployPlanTailPage"
    data = {
        'draw': '4',
        'columns[0][data]': '__index__',
        'columns[0][name]': '__index__',
        'columns[0][searchable]': 'true',
        'columns[0][orderable]': 'false',
        'columns[0][search][value]': '',
        'columns[0][search][regex]': 'false',
        'columns[1][data]': 'monthly',
        'columns[1][name]': '',
        'columns[1][searchable]': 'true',
        'columns[1][orderable]': 'false',
        'columns[1][search][value]': '',
        'columns[1][search][regex]': 'false',
        'columns[2][data]': 'brCode',
        'columns[2][name]': '',
        'columns[2][searchable]': 'true',
        'columns[2][orderable]': 'false',
        'columns[2][search][value]': '',
        'columns[2][search][regex]': 'false',
        'columns[3][data]': 'brName',
        'columns[3][name]': '',
        'columns[3][searchable]': 'true',
        'columns[3][orderable]': 'false',
        'columns[3][search][value]': '',
        'columns[3][search][regex]': 'false',
        'columns[4][data]': 'tmpBrType',
        'columns[4][name]': '',
        'columns[4][searchable]': 'true',
        'columns[4][orderable]': 'false',
        'columns[4][search][value]': '',
        'columns[4][search][regex]': 'false',
        'columns[5][data]': 'brDomain',
        'columns[5][name]': '',
        'columns[5][searchable]': 'true',
        'columns[5][orderable]': 'false',
        'columns[5][search][value]': '',
        'columns[5][search][regex]': 'false',
        'columns[6][data]': 'brDept',
        'columns[6][name]': '',
        'columns[6][searchable]': 'true',
        'columns[6][orderable]': 'false',
        'columns[6][search][value]': '',
        'columns[6][search][regex]': 'false',
        'columns[7][data]': 'brChief',
        'columns[7][name]': '',
        'columns[7][searchable]': 'true',
        'columns[7][orderable]': 'false',
        'columns[7][search][value]': '',
        'columns[7][search][regex]': 'false',
        'columns[8][data]': 'brStatus',
        'columns[8][name]': '',
        'columns[8][searchable]': 'true',
        'columns[8][orderable]': 'false',
        'columns[8][search][value]': '',
        'columns[8][search][regex]': 'false',
        'columns[9][data]': 'deployDate',
        'columns[9][name]': '',
        'columns[9][searchable]': 'true',
        'columns[9][orderable]': 'false',
        'columns[9][search][value]': '',
        'columns[9][search][regex]': 'false',
        'columns[10][data]': 'deployedDate',
        'columns[10][name]': '',
        'columns[10][searchable]': 'true',
        'columns[10][orderable]': 'false',
        'columns[10][search][value]': '',
        'columns[10][search][regex]': 'false',
        'columns[11][data]': 'reqPhyMach',
        'columns[11][name]': '',
        'columns[11][searchable]': 'true',
        'columns[11][orderable]': 'false',
        'columns[11][search][value]': '',
        'columns[11][search][regex]': 'false',
        'columns[12][data]': 'reqVrtlMach',
        'columns[12][name]': '',
        'columns[12][searchable]': 'true',
        'columns[12][orderable]': 'false',
        'columns[12][search][value]': '',
        'columns[12][search][regex]': 'false',
        'columns[13][data]': 'reqRelReview',
        'columns[13][name]': '',
        'columns[13][searchable]': 'true',
        'columns[13][orderable]': 'false',
        'columns[13][search][value]': '',
        'columns[13][search][regex]': 'false',
        'columns[14][data]': 'batchNum',
        'columns[14][name]': '',
        'columns[14][searchable]': 'true',
        'columns[14][orderable]': 'false',
        'columns[14][search][value]': '',
        'columns[14][search][regex]': 'false',
        'columns[15][data]': 'testSituation',
        'columns[15][name]': '',
        'columns[15][searchable]': 'true',
        'columns[15][orderable]': 'false',
        'columns[15][search][value]': '',
        'columns[15][search][regex]': 'false',
        'columns[16][data]': 'proSit',
        'columns[16][name]': '',
        'columns[16][searchable]': 'true',
        'columns[16][orderable]': 'false',
        'columns[16][search][value]': '',
        'columns[16][search][regex]': 'false',
        'columns[17][data]': 'createper',
        'columns[17][name]': '',
        'columns[17][searchable]': 'true',
        'columns[17][orderable]': 'false',
        'columns[17][search][value]': '',
        'columns[17][search][regex]': 'false',
        'columns[18][data]': 'deployPlan',
        'columns[18][name]': '',
        'columns[18][searchable]': 'true',
        'columns[18][orderable]': 'false',
        'columns[18][search][value]': '',
        'columns[18][search][regex]': 'false',
        'columns[19][data]': 'noDeployPlan',
        'columns[19][name]': '',
        'columns[19][searchable]': 'true',
        'columns[19][orderable]': 'false',
        'columns[19][search][value]': '',
        'columns[19][search][regex]': 'false',
        'columns[20][data]': 'monthStatus',
        'columns[20][name]': '',
        'columns[20][searchable]': 'true',
        'columns[20][orderable]': 'false',
        'columns[20][search][value]': '',
        'columns[20][search][regex]': 'false',
        'columns[21][data]': 'deployEffectDate',
        'columns[21][name]': '',
        'columns[21][searchable]': 'true',
        'columns[21][orderable]': 'false',
        'columns[21][search][value]': '',
        'columns[21][search][regex]': 'false',
        'columns[22][data]': 'deployAuditStatus',
        'columns[22][name]': '',
        'columns[22][searchable]': 'true',
        'columns[22][orderable]': 'false',
        'columns[22][search][value]': '',
        'columns[22][search][regex]': 'false',
        'columns[23][data]': 'deployAuditStartDate',
        'columns[23][name]': '',
        'columns[23][searchable]': 'true',
        'columns[23][orderable]': 'false',
        'columns[23][search][value]': '',
        'columns[23][search][regex]': 'false',
        'columns[24][data]': 'distributeTo',
        'columns[24][name]': '',
        'columns[24][searchable]': 'true',
        'columns[24][orderable]': 'false',
        'columns[24][search][value]': '',
        'columns[24][search][regex]': 'false',
        'columns[25][data]': 'sysCount',
        'columns[25][name]': '',
        'columns[25][searchable]': 'true',
        'columns[25][orderable]': 'false',
        'columns[25][search][value]': '',
        'columns[25][search][regex]': 'false',
        'columns[26][data]': 'moduleName',
        'columns[26][name]': '',
        'columns[26][searchable]': 'true',
        'columns[26][orderable]': 'false',
        'columns[26][search][value]': '',
        'columns[26][search][regex]': 'false',
        'columns[27][data]': 'brProposerDeptName',
        'columns[27][name]': '',
        'columns[27][searchable]': 'true',
        'columns[27][orderable]': 'false',
        'columns[27][search][value]': '',
        'columns[27][search][regex]': 'false',
        'columns[28][data]': 'tmpBrContacts',
        'columns[28][name]': '',
        'columns[28][searchable]': 'true',
        'columns[28][orderable]': 'false',
        'columns[28][search][value]': '',
        'columns[28][search][regex]': 'false',
        'columns[29][data]': 'approval',
        'columns[29][name]': '',
        'columns[29][searchable]': 'true',
        'columns[29][orderable]': 'false',
        'columns[29][search][value]': '',
        'columns[29][search][regex]': 'false',
        'columns[30][data]': 'createdate',
        'columns[30][name]': '',
        'columns[30][searchable]': 'true',
        'columns[30][orderable]': 'false',
        'columns[30][search][value]': '',
        'columns[30][search][regex]': 'false',
        'columns[31][data]': 'deployChangeDate',
        'columns[31][name]': '',
        'columns[31][searchable]': 'true',
        'columns[31][orderable]': 'false',
        'columns[31][search][value]': '',
        'columns[31][search][regex]': 'false',
        'columns[32][data]': 'lastModifyTime',
        'columns[32][name]': '',
        'columns[32][searchable]': 'true',
        'columns[32][orderable]': 'false',
        'columns[32][search][value]': '',
        'columns[32][search][regex]': 'false',
        'columns[33][data]': 'signCode',
        'columns[33][name]': '',
        'columns[33][searchable]': 'true',
        'columns[33][orderable]': 'false',
        'columns[33][search][value]': '',
        'columns[33][search][regex]': 'false',
        'columns[34][data]': 'isGeneralDesign',
        'columns[34][name]': '',
        'columns[34][searchable]': 'true',
        'columns[34][orderable]': 'false',
        'columns[34][search][value]': '',
        'columns[34][search][regex]': 'false',
        'columns[35][data]': 'isNumIndex',
        'columns[35][name]': '',
        'columns[35][searchable]': 'true',
        'columns[35][orderable]': 'false',
        'columns[35][search][value]': '',
        'columns[35][search][regex]': 'false',
        'columns[36][data]': 'isAccountsInvolved',
        'columns[36][name]': '',
        'columns[36][searchable]': 'true',
        'columns[36][orderable]': 'false',
        'columns[36][search][value]': '',
        'columns[36][search][regex]': 'false',
        'columns[37][data]': 'isPlanningReview',
        'columns[37][name]': '',
        'columns[37][searchable]': 'true',
        'columns[37][orderable]': 'false',
        'columns[37][search][value]': '',
        'columns[37][search][regex]': 'false',
        'columns[38][data]': 'brArchitect',
        'columns[38][name]': '',
        'columns[38][searchable]': 'true',
        'columns[38][orderable]': 'false',
        'columns[38][search][value]': '',
        'columns[38][search][regex]': 'false',
        'columns[39][data]': 'depArchitect',
        'columns[39][name]': '',
        'columns[39][searchable]': 'true',
        'columns[39][orderable]': 'false',
        'columns[39][search][value]': '',
        'columns[39][search][regex]': 'false',
        'start': '0',
        'length': '100',
        'search[value]': '',
        'search[regex]': 'false',
        'monthly': month,
        'likeBrCode': brCode,
        'likeBrName': '',
        'brType': '',
        'brDomain': '',
        'brDept': '',
        # 进行中为1  完成为5
        'brStatus': '1',
        'notMonthStatuss': '6',
        'notInBrStatus': '7',
        'page': page,
        'size': '50',
        'brChief': '',
        'deployDate': date,
        'monthStatus': '',
        'deployAuditStatus': '',
        'distributeTo': '',
        'deployPlan': '',
        'likeSysName': name,
        'approval': '',
        'isGeneralDesign': '',
    }
    res=session.post(URL,data=data)
    try:
        # 1 维护需求 2 项目需求 3 年度预算制  4事件问题
        brtType={'1':'维护需求','2':'项目需求','3':'年度预算制','4':'事件问题'}
        rowData=res.json().get('rows')
        print(len(rowData))
        # 获取文件与sheet
        workbook=openpyxl.Workbook()
        sheet=workbook.active
        for index,item in enumerate(rowData):
            # 根据ID获取牵头人和牵头部门
            
            brPerson=session.post("http://10.251.52.16:12104/adpm-web/selModel/loadModel.act?modelName=xdb:userById",data={"id":item.get('brChief')}).json()[0].get('code_text')
            brOrg=session.post("http://10.251.52.16:12104/adpm-web/selModel/loadModel.act?modelName=xdb:orgleafById",data={"id":item.get('brDept')}).json()[0].get('code_text')
            
            personList=['奚秋月','王金鹏','李雪琦','郭蓓','陈小忠','夏浩男','刘乾']
            if brPerson in personList:
                isUs="是"
            else:
                isUs="否"
            brDate=item.get('deployDate')[0:8]
            if brDate==flagdate:
                isDate="是"
            else:
                isDate="否"
            deployDate=item.get('deployDate')[0:4]+'/'+item.get('deployDate')[4:6]+'/'+item.get('deployDate')[6:8]
            if month=='' or month is None:
                month='2020-09'
            testManger=GetTestManager(item.get('brCode'),month.split('-')[0],month.split('-')[1])
            sheet['A'+str(index+1)]=''
            sheet['B'+str(index+1)]=''
            sheet['C'+str(index+1)]=''
            sheet['D'+str(index+1)]=''
            sheet['E'+str(index+1)]=item.get('brCode')
            sheet['F'+str(index+1)]=item.get('brName')
            sheet['G'+str(index+1)]=brtType[item.get('tmpBrType')]
            sheet['H'+str(index+1)]=item.get('brProposerDeptName')
            sheet['I'+str(index+1)]=item.get('creUserName')
            sheet['J'+str(index+1)]=brOrg
            sheet['K'+str(index+1)]=brPerson
            sheet['L'+str(index+1)]=isUs
            sheet['M'+str(index+1)]=''
            sheet['N'+str(index+1)]=''
            sheet['O'+str(index+1)]=''
            sheet['P'+str(index+1)]=''
            sheet['Q'+str(index+1)]=''
            sheet['R'+str(index+1)]=testManger.get('flag')
            sheet['S'+str(index+1)]=testManger.get('name')
            sheet['T'+str(index+1)]=deployDate
            sheet['U'+str(index+1)]=isDate
            sheet['V'+str(index+1)]=''
            sheet['W'+str(index+1)]=''
            sheet['X'+str(index+1)]=''
            sheet['AD'+str(index+1)]=item.get('proName')
            
            
            
        # for col in cols:
        #     for index in range(len(rowData)):
        #         print(col+str(index))
        workbook.save(filePath)
        if page=='1':
            newFilepath=filePath.split('.')[0]+'2.xlsx'
            GetMonthlyList(month,date,name,page="2",filePath=newFilepath)
    except Exception as e:
        print('error=>',e)

def GetTestManager(brCode,year="2020",monthly="01"):
    '''
    根据需求号和年月  查询测试经理
    @param brCode：需求号
    @param year：年
    @param monthly：月
    '''
    monthlyInfo={
        '01':'31',
        '02':'28',
        '03':'31',
        '04':'30',
        '05':'31',
        '06':'30',
        '07':'31',
        '08':'31',
        '09':'30',
        '10':'31',
        '11':'30',
        '12':'31'
    }
    intYear=int(year)
    if intYear%100==0 and intYear%400==0:
        monthlyInfo['02']='29'
    if not intYear%100 ==0 and intYear%4==0:
        monthlyInfo['02']='29'
    start=year+monthly+'01'
    end=year+monthly+monthlyInfo[monthly]

    URL="http://10.251.52.16:12104/adpm-web/businessRequirement/json/list/listPageBrTestBugVO"
    data={
        'draw': '5',
        'columns[0][data]': '__index__',
        'columns[0][name]': '__index__',
        'columns[0][searchable]': 'true',
        'columns[0][orderable]': 'false',
        'columns[0][search][value]': '',
        'columns[0][search][regex]': 'false',
        'columns[1][data]': 'brCode',
        'columns[1][name]': '',
        'columns[1][searchable]': 'true',
        'columns[1][orderable]': 'false',
        'columns[1][search][value]': '',
        'columns[1][search][regex]': 'false',
        'columns[2][data]': 'brName',
        'columns[2][name]': '',
        'columns[2][searchable]': 'true',
        'columns[2][orderable]': 'false',
        'columns[2][search][value]': '',
        'columns[2][search][regex]': 'false',
        'columns[3][data]': 'brType',
        'columns[3][name]': '',
        'columns[3][searchable]': 'true',
        'columns[3][orderable]': 'false',
        'columns[3][search][value]': '',
        'columns[3][search][regex]': 'false',
        'columns[4][data]': 'currentStatusText',
        'columns[4][name]': '',
        'columns[4][searchable]': 'true',
        'columns[4][orderable]': 'false',
        'columns[4][search][value]': '',
        'columns[4][search][regex]': 'false',
        'columns[5][data]': 'brDept',
        'columns[5][name]': '',
        'columns[5][searchable]': 'true',
        'columns[5][orderable]': 'false',
        'columns[5][search][value]': '',
        'columns[5][search][regex]': 'false',
        'columns[6][data]': 'brChief',
        'columns[6][name]': '',
        'columns[6][searchable]': 'true',
        'columns[6][orderable]': 'false',
        'columns[6][search][value]': '',
        'columns[6][search][regex]': 'false',
        'columns[7][data]': 'brTestManager',
        'columns[7][name]': '',
        'columns[7][searchable]': 'true',
        'columns[7][orderable]': 'false',
        'columns[7][search][value]': '',
        'columns[7][search][regex]': 'false',
        'columns[8][data]': 'brTestManagerOrgName',
        'columns[8][name]': '',
        'columns[8][searchable]': 'true',
        'columns[8][orderable]': 'false',
        'columns[8][search][value]': '',
        'columns[8][search][regex]': 'false',
        'columns[9][data]': 'brStatus',
        'columns[9][name]': '',
        'columns[9][searchable]': 'true',
        'columns[9][orderable]': 'false',
        'columns[9][search][value]': '',
        'columns[9][search][regex]': 'false',
        'columns[10][data]': 'batchNum',
        'columns[10][name]': '',
        'columns[10][searchable]': 'true',
        'columns[10][orderable]': 'false',
        'columns[10][search][value]': '',
        'columns[10][search][regex]': 'false',
        'columns[11][data]': 'deployDate',
        'columns[11][name]': '',
        'columns[11][searchable]': 'true',
        'columns[11][orderable]': 'false',
        'columns[11][search][value]': '',
        'columns[11][search][regex]': 'false',
        'columns[12][data]': 'progroupStatus',
        'columns[12][name]': '',
        'columns[12][searchable]': 'true',
        'columns[12][orderable]': 'false',
        'columns[12][search][value]': '',
        'columns[12][search][regex]': 'false',
        'columns[13][data]': 'reqTestDept',
        'columns[13][name]': '',
        'columns[13][searchable]': 'true',
        'columns[13][orderable]': 'false',
        'columns[13][search][value]': '',
        'columns[13][search][regex]': 'false',
        'columns[14][data]': 'caseTotal',
        'columns[14][name]': '',
        'columns[14][searchable]': 'true',
        'columns[14][orderable]': 'false',
        'columns[14][search][value]': '',
        'columns[14][search][regex]': 'false',
        'columns[15][data]': 'caseExecRateText',
        'columns[15][name]': '',
        'columns[15][searchable]': 'true',
        'columns[15][orderable]': 'false',
        'columns[15][search][value]': '',
        'columns[15][search][regex]': 'false',
        'columns[16][data]': 'casePassRateText',
        'columns[16][name]': '',
        'columns[16][searchable]': 'true',
        'columns[16][orderable]': 'false',
        'columns[16][search][value]': '',
        'columns[16][search][regex]': 'false',
        'columns[17][data]': 'hbug',
        'columns[17][name]': '',
        'columns[17][searchable]': 'true',
        'columns[17][orderable]': 'false',
        'columns[17][search][value]': '',
        'columns[17][search][regex]': 'false',
        'columns[18][data]': 'mbug',
        'columns[18][name]': '',
        'columns[18][searchable]': 'true',
        'columns[18][orderable]': 'false',
        'columns[18][search][value]': '',
        'columns[18][search][regex]': 'false',
        'columns[19][data]': 'lbug',
        'columns[19][name]': '',
        'columns[19][searchable]': 'true',
        'columns[19][orderable]': 'false',
        'columns[19][search][value]': '',
        'columns[19][search][regex]': 'false',
        'columns[20][data]': 'bugTotal',
        'columns[20][name]': '',
        'columns[20][searchable]': 'true',
        'columns[20][orderable]': 'false',
        'columns[20][search][value]': '',
        'columns[20][search][regex]': 'false',
        'start': '0',
        'length': '10',
        'search[value]': '',
        'search[regex]': 'false',
        'likeBrCode': brCode,
        'likeBrName': '',
        'likeOaCode': '',
        'brDept': '',
        'brType': '',
        'brProcStatuss': '',
        'brStatus': '1',
        'deployDateScope': start+','+end,
        'page': '1',
        'size': '10',
        'brChief': '',
        'brSubdivide': '',
        'brProposerSupDept': '',
        'likeBrProposeTimeStart': '',
        'likeBrProposeTimeEnd': '',
        'progroupstatuss': ''
    }
    try:
        res=session.post(URL,data=data).json().get('rows')[0]
        reqTestMap={'0':'否','1':'是','':''}
        reqTestDept=reqTestMap.get(res.get('reqTestDept'))
        testId=res.get('brTestManager')
        # print(reqTestDept,testId)
        name=session.post("http://10.251.52.16:12104/adpm-web/selModel/loadModel.act?modelName=xdb:userById",data={'id':testId}).json()[0].get('code_text')
        return {'name':name,'flag':reqTestDept}
    except Exception as e:
        print('error',e)
        return {'name':'','flag':''}
    # brTestManager

def GetMoney(code):
    try:
        brId=GetBrInfo(code).get('brId')
        URL=BASE+"/adpm-web/sysWorkload/json/selectcutsysloadlist?brId="+str(brId)
        gzlList=session.post(URL,data={'workingSpace':'top-left-req:'+str(brId)}).json()
        for gzlItem in gzlList:
            tmpSysMark=gzlItem.get('tmpSysMark')
            tmpSysName=gzlItem.get('tmpSysName')
            totalManDay=gzlItem.get('totalManDay')
            totalFee=gzlItem.get('totalFee')
            if tmpSysMark=='BBP':
                tmpDetailList=gzlItem.get('tmpDetailList')
                count={'赞同科技股份有限公司':0,'北京联龙博通电子商务技术有限公司':0,'行员':0,'珠海赞同科技有限公司':0,'北京中科金财科技股份有限公司':0}
                for changshangInfo in tmpDetailList:
                    humanDayTotal=changshangInfo.get('humanDayTotal')
                    tmpOrgName=changshangInfo.get('tmpOrgName')
                    count[tmpOrgName]=count[tmpOrgName]+humanDayTotal
                print(code,'-',totalManDay,'-',count['赞同科技股份有限公司']+count['珠海赞同科技有限公司'],'-',count['北京联龙博通电子商务技术有限公司'],'-',count['北京中科金财科技股份有限公司'],'-',count['行员'])
    except Exception as e:
        print(code,'\terror\t',e)

def GetDoc(info,brId,dirId,text):
    data = {
        'draw': '1',
        'columns[0][data]': 'delName',
        'columns[0][name]': '',
        'columns[0][searchable]': 'true',
        'columns[0][orderable]': 'false',
        'columns[0][search][value]': '',
        'columns[0][search][regex]': 'false',
        'columns[1][data]': 'delCode',
        'columns[1][name]': '',
        'columns[1][searchable]': 'true',
        'columns[1][orderable]': 'false',
        'columns[1][search][value]': '',
        'columns[1][search][regex]': 'false',
        'columns[2][data]': 'batchNum',
        'columns[2][name]': '',
        'columns[2][searchable]': 'true',
        'columns[2][orderable]': 'false',
        'columns[2][search][value]': '',
        'columns[2][search][regex]': 'false',
        'columns[3][data]': 'sysId',
        'columns[3][name]': '',
        'columns[3][searchable]': 'true',
        'columns[3][orderable]': 'false',
        'columns[3][search][value]': '',
        'columns[3][search][regex]': 'false',
        'columns[4][data]': 'delVer',
        'columns[4][name]': '',
        'columns[4][searchable]': 'true',
        'columns[4][orderable]': 'false',
        'columns[4][search][value]': '',
        'columns[4][search][regex]': 'false',
        'columns[5][data]': 'lastModifyUserName',
        'columns[5][name]': '',
        'columns[5][searchable]': 'true',
        'columns[5][orderable]': 'false',
        'columns[5][search][value]': '',
        'columns[5][search][regex]': 'false',
        'columns[6][data]': 'lastModifyTime',
        'columns[6][name]': 'MODIFY',
        'columns[6][searchable]': 'true',
        'columns[6][orderable]': 'true',
        'columns[6][search][value]': '',
        'columns[6][search][regex]': 'false',
        'columns[7][data]': 'cz',
        'columns[7][name]': '',
        'columns[7][searchable]': 'true',
        'columns[7][orderable]': 'false',
        'columns[7][search][value]': '',
        'columns[7][search][regex]': 'false',
        'start': '0',
        'length': '100',
        'search[value]': '',
        'search[regex]': 'false',
        'dirRelId': brId,
        'dirType': '3',
        'dirIds[]': dirId,
        'delNameLike': '',
        'page': '1',
        'size': '10',
    }
    URL="http://10.251.52.16:12104/adpm-web/delMgr/json/listReqDels"
    res=session.post(URL,data=data).json()
    rows=res.get('rows')
    for item in rows:
        # print(item.get('delName'),item.get('delId'))
        BASE="http://10.251.52.16:12104/adpm-web/del/json/download?delId="
        fileUrl=BASE+str(item.get('delId'))
        path=info['brCode']+'_'+info['brName']+'/'+text+'/'+item.get('delName')
        DownLoader(fileUrl,path)

        

def GetDocList(info):
    brId=info['brId']
    URL="http://10.251.52.16:12104/adpm-web/delDir/json/tree"
    data={
        'dirRelId': brId,
        'dirType': '3'
    }
    allList=session.post(URL,data=data).json()
    dirId=allList[0].get('dirId')
    children=allList[0].get('children')

    root=info['brCode']+'_'+info['brName']
    Mkdir(root)
    for item in children:
        # print(item)
        # print(item.get('dirId'),item.get('text'))
        # 获取文件列表
        GetDoc(info,brId,item.get('dirId'),item.get('text'))


def Mkdir(dirPath):
    PATH="D:/all/"
    path=PATH+dirPath
    if os.path.exists(path):
        return
    os.mkdir(path)
    os.mkdir(path+'/需求阶段')
    os.mkdir(path+'/设计阶段')
    os.mkdir(path+'/开发阶段')
    os.mkdir(path+'/集成测试')
    os.mkdir(path+'/用户测试')
    os.mkdir(path+'/投产阶段')
    os.mkdir(path+'/其他')

def DownLoader(fileUrl,path):
    PATH="D:/all/"
    path=PATH+path
    print('正在下载\t',path)
    data=session.get(fileUrl).content
    with open(path,'wb') as fp:
        fp.write(data)

if __name__ == "__main__":
    Login('303508', 'liuqian1204@')
    print(GetBrInfo('X20200902000009'))
    # GetMonthlyList("2020-09",filePath="D:/九月.xlsx",flagdate="20200918",name="柜面移动营销")
    # GetMonthlyList("2020-09",filePath="D:/九月.xlsx",flagdate="20200918")


